package com.itheima.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.Map;

public class JwtUtils {

    private static final String SECRET_KEY = "5Y+q5Lya5omT";//指定加密算法 , 秘钥
    private static final long EXPIRATION_TIME = 12 * 60 * 60 * 1000;//12小时

    /**
     * 生成 JWT令牌
     * @param claims
     * @return
     */
    public static String generateJwt(Map<String,Object> claims){
        String jwt = Jwts.builder()
                .setSubject("username") // 设置主题（通常是用户ID或用户名）
                .signWith(SignatureAlgorithm.HS256, SECRET_KEY)//使用秘钥签名 HS256:签名算法
                .addClaims(claims)
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))//设置过期时间
                .compact();//生成紧凑的 JWT 字符串
        return jwt;
    }

    /**
     * 解析 JWT令牌
     * @param jwt
     * @return
     * @throws Exception
     */
    public static Claims parseJWT(String jwt) throws Exception{
        Claims claims = Jwts.parser()
                .setSigningKey(SECRET_KEY)
                .parseClaimsJws(jwt)
                .getBody();
        return claims;
    }
}
